package com.zhiyu.service;

import org.springframework.stereotype.Service;

import java.util.Set;

@Service
public interface RedisService {
    /**
     * 设置key
     * @param key 键
     * @param value 值
     */
    public void setKey(String key, String value);

    /**
     * 设置key，同时设置过期时间
     * @param key 键
     * @param value 值
     * @param expire 超时时间
     */
    public void setKey(String key, String value, long expire);

    /**
     * 获取key
     * @param key 键
     * @return
     */
    public String getKey(String key);

    /**
     * 设置过期时间
     * @param key 键
     * @param expire 超时时间
     * @return
     */
    public boolean expire(String key, long expire);

    /**
     * 删除key
     * @param key 键
     */
    public void remove(String key);

    /**
     * 自增
     * @param key 键
     * @param delta 步长
     * @return
     */
    public Long increment(String key, long delta);

    /**
     * 添加集合元素
     * @param key 集合名
     * @param value 值
     */
    public void addIntoSet(String key, String ...value);

    /**
     * 删除集合元素
     * @param key 集合名
     * @param value 值
     */
    public void removeFromSet(String key, String ...value);

    /**
     * 获取集合大小
     * @param key 集合名
     * @return 集合大小
     */
    public long getSetSize(String key);

    /**
     * 获取集合所有元素
     * @param key 集合名
     * @return 集合内元素的集合
     */
    public Set<String> getSetMembers(String key);

    /**
     * 查看元素是否在集合中
     * @param key 集合名
     * @param target 目标元素
     * @return 存在返回true，否则返回false
     */
    public boolean isSetMember(String key, String target);
}
